#!/bin/bash

# 定义soyo-order项目路径
PROJECT_DIR="."
SERVICE_NAME="soyo-order"
IMAGE_NAME="soyo-order-image"
IMAGE_VERSION="latest"

echo "=== 开始 CI/CD 流程 for ${SERVICE_NAME} ==="

# 1. 进入项目目录 (现在脚本已在项目目录下，无需切换)
# echo "进入项目目录: ${PROJECT_DIR}"
# cd ${PROJECT_DIR} || { echo "进入项目目录失败，退出。"; exit 1; }

# 2. 运行测试
echo "=== 运行单元测试 ==="
# 假设是Maven项目
mvn test || { echo "单元测试失败，退出。"; exit 1; }
echo "单元测试成功。"

# 3. 打包
echo "=== 打包项目 ==="
mvn clean package -DskipTests || { echo "项目打包失败，退出。"; exit 1; }
echo "项目打包成功。"

# 获取JAR文件名 (假设只有一个以.jar结尾的文件在target目录)
JAR_FILE=$(find target -name "*.jar" | head -n 1)
if [ -z "$JAR_FILE" ]; then
    echo "未找到JAR文件，退出。"
    exit 1
fi
echo "找到JAR文件: ${JAR_FILE}"

# 4. 容器化 (构建Docker镜像)
echo "=== 构建 Docker 镜像 ==="
# 注意：这需要soyo-order目录下存在Dockerfile
# 如果没有Dockerfile，你需要先创建一个。我将在后续步骤中为您创建示例Dockerfile。
# Dockerfile应该将打包好的JAR文件复制到镜像中
docker build -t ${IMAGE_NAME}:${IMAGE_VERSION} . || { echo "Docker镜像构建失败，退出。"; exit 1; }
echo "Docker镜像构建成功: ${IMAGE_NAME}:${IMAGE_VERSION}"

# 5. K8S 环境部署
echo "=== 部署到 Kubernetes ==="
# 注意：这需要soyo-order目录下存在Kubernetes部署和服务YAML文件
# 如果没有这些文件，你需要先创建。我将在后续步骤中为您创建示例YAML文件。
# 请确保你的kubeconfig已配置正确，并且kubectl可访问集群

# 应用Deployment
kubectl apply -f ${SERVICE_NAME}-deployment.yaml || { echo "Kubernetes Deployment部署失败，退出。"; exit 1; }
echo "Kubernetes Deployment部署成功。"

# 应用Service
kubectl apply -f ${SERVICE_NAME}-service.yaml || { echo "Kubernetes Service部署失败，退出。"; exit 1; }
echo "Kubernetes Service部署成功。"


echo "=== CI/CD 流程 for ${SERVICE_NAME} 完成 ==="
